package com.yc.web.servlets;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyuncs.exceptions.ClientException;
import com.yc.dao.DbProperties;

import java.io.InputStream;

public class UploadToOSS {

//    public static void main(String[] args) {
//        try {
//            uploadFileOSS();
//        } catch (ClientException e) {
//            throw new RuntimeException(e);
//        }
//    }
    static  OSS ossClient = null;
    public static String uploadFileOSS(String fileKey, InputStream inputStream) throws ClientException {
        // 阿里云OSS服务的Endpoint。  服务的访问域名，指定了阿里云OSS服务的网络节点
        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
//        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 你的阿里云OSS存储桶名称。填写Bucket名称，
        String bucketName = "yc140test2";
        // OSS中的文件键（Key），即上传后的文件名。
//        String fileKey = "qqq.jpg"; // 保存到OSS的文件名
        // 本地系统中的文件路径，用于找到你想上传的文件。
//        String filePath = "C:/Users/DELL/OneDrive/桌面/图片/二次元/qqq.jpg"; // 本地文件路径

        // 使用OSSClientBuilder构建一个OSS客户端实例。
        String id = DbProperties.getInstance().getProperty("ossID");
        String key = DbProperties.getInstance().getProperty("ossKey");
        ossClient = new OSSClientBuilder().build(endpoint,id,key);

        try {
            // 创建一个文件输入流，用于读取本地文件。
//            FileInputStream inputStream = new FileInputStream(filePath);
            // 调用OSS客户端的putObject方法上传文件。传入存储桶名、文件键和文件输入流。
            ossClient.putObject(bucketName, "product/"+fileKey, inputStream);
            System.out.println("上传成功");
            //返回出去保存到数据库 ： https://xin-qiu.oss-cn-beijing.aliyuncs.com/cx.png
            //https://xin-qiu.oss-cn-beijing.aliyuncs.com/product/1.png
            return "https://yc140test2.oss-cn-hangzhou.aliyuncs.com/product/"+fileKey;//上传成功 把 访问域名返回出去
        } catch (Exception e) {
            System.out.println("文件未找到：" + e.getMessage());
            return "0";  //失败返回 0
        }
    }

    public static void close() {
        // 最终，无论上传成功还是失败，都关闭OSS客户端实例以释放资源。
        ossClient.shutdown();
    }
}
